Release Notes for P4, the Helix Command Line, P4D, the Helix Versioning Engine P4P, the Helix Proxy and P4Broker, the Helix Broker Version 2019.1 Introduction This document lists all user-visible changes to: * Helix Versioning Engine (P4D) * Command line client (P4) * Helix Proxy (P4P) * Helix Broker (P4Broker) in 2019.1 release. Release notes for other Perforce Helix products are available separately on the Perforce Documentation web page. Developer notes for Perforce API programming, the Helix Broker and also a separate document which programmers should read in addition to this release note document. Perforce numbers releases YYYY.R/CCCCC, e.g. 2002.1/30547. YYYY is the year; R is the release of that year; CCCCC is the bugfix change level. Each bugfix in these release notes is marked by its change number. Any build includes (1) all bugfixes of all previous releases and (2) all bugfixes of the current release up to the bugfix change level. Both 'p4' and 'p4d' will report their version information by passing the '-V' flag. Additionally, 'p4' can report the server's information with the 'p4 info' command. Version information includes a release version and a build change number. The build change number can be compared with change numbers and patch information mentioned in the matching version release notes file to determine if a particular build of a version includes the change mentioned. Supported Platforms for p4d, p4, p4p and p4broker Linux kernel 2.6+ (glibc 2.12+) for Intel(x86, x86_64) Windows 8.1 for Intel(x86, x64) Windows 10 for Intel(x86, x64) Windows 2012 for Intel(x64) Windows 2016 for Intel(x64) Windows 2019 for Intel(x64) Apple OS X 10.12+ for Intel(x86_64) -------------------------------------------------------------------------- Important Platform End-of-Life Notice This notice identifies the platforms that will be placed in End-of-Life (EOL) status on October 2020. This applies to p4, p4d, p4p, p4ftp, and p4broker components of the server release. The following platforms have entered the Obsolescent phase in this release: Mac OS X 10.5, 10.6, 10.7, 10.8, 10.9(x86, x86_64), 10.10(x86_64) 10.11(x86_64) Linux kernels (glibc < 2.12) for Intel(x86, x86_64) Windows 2008 for Intel(x86_64), Windows 8 for Intel(x86, x64) OBSOLESCENT Phase: Starting with this release,these platforms will no longer be supported. Customers will receive full support and patches for the deprecated platforms during this phase for older releases. The platforms will remain in this phase until October 2020 after which they will transition into the discontinued phase. DISCONTINUED (EOL) Phase: Patches will no longer be issued for these platforms. We will no longer provide technical support to customers with servers on these platforms -------------------------------------------------------------------------- Important limitation for Windows server Support for Helix Core Extensions was disabled for Windows servers due to unrelated performance concerns on that platform requiring a conflicting toolchain change. Extensions remain fully supported on Linux and Mac. -------------------------------------------------------------------------- Important security note This release links OpenSSL version 1.1.1k. -------------------------------------------------------------------------- Important export note This product is subject to U.S. export control laws and regulations including, but not limited to, the U.S. Export Administration Regulations, the International Traffic in Arms Regulation requirements, and all applicable end-use, end-user and destination restrictions. Licensee shall not permit, directly or indirectly, use of any Perforce technology in or by any U.S. embargoed country or otherwise in violation of any U.S. export control laws and regulations. -------------------------------------------------------------------------- Upgrading the Server ** IMPORTANT UPGRADE NOTES ** CHANGES TO DISTRIBUTED UPGRADE RECOMMENDATIONS For v19.1 onwards of the Helix Versioning Engine (P4D), significant schema upgrades performed by 'p4d -xu' will only be performed on servers where those upgrades are needed. This means that metadata changes made by upgrades must be replicated and so must be journaled. To help prevent mistakes, upgrades will not run if journaling is disabled. If offline databases are in use, upgrades should not be performed on them, as the upgrade performed on the live database will be journaled and applied during normal journal replay. The recommendations for multi-server deployment upgrades have also been revised: we are now recommending that all servers are upgraded in a single upgrade session. More information can be found in the Helix Core Server Administrator Guides: https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.upgrade.html https://www.perforce.com/manuals/p4dist/Content/P4Dist/intro.maintaining.html ------------------------------------------------------------------- CHANGES TO UNLICENSED SERVER For v16.1 onwards of the Helix Versioning Engine (P4D) the number of free users allowed with an unlicensed server has changed to 5, the number of clients remains at 20. Previous versions of the server will continue to support the 20/20 usage allowance. ------------------------------------------------------------------- BEFORE UPGRADING To upgrade your Helix Versioning Engine (P4D), your Perforce license file must be current. Expired licenses do not work with upgraded servers. In addition to your usual checkpointing scheme, always checkpoint your server immediately before undertaking an upgrade. Read-only archive directories can interfere with the upgrade process. This may be the case for archive paths migrated from a different version control system, such as CVS, or in cases where 3rd party imported content has been made read only by a system admin. Make sure all such archive paths are writeable before attempting the upgrade. DOWNGRADING A 2019.1 SERVER IS NOT POSSIBLE UPGRADING PROCEDURE IS DIFFERENT DEPENDING ON WHAT YOUR CURRENT PERFORCE VERSION IS: UPDATE DATABASE SCHEMA vs UPDATE DATABASE FORMAT ------------------------------------------------------------------- ** UPDATE DATABASE SCHEMA If your current server version is 2013.3 or above, then this upgrade is a UPDATE DATABASE SCHEMA upgrade: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the significant schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the significant schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. Note: Personal DVCS servers will automatically perform any database schema upgrades; whilst the upgrade steps described above are unnecessary for these servers, they are safe to run. ------------------------------------------------------------------- ** UPDATE DATABASE FORMAT If your current server version is 2013.2 or a previous release then this upgrade is an UPDATE DATABASE FORMAT upgrade: Due to the new btree format introduced in 2013.3 this is not an UPDATE DATABASE SCHEMA upgrade. A checkpoint using your old server and then a restore using the 2019.1 server is required before the internal upgrades 'p4d -xu' (if required) can be performed. Note: If you have made use of the (undocumented) '+T' modifier (storing file content in the tiny.db database) this data is not checkpointed (and therefore not restored). See 'p4 help undoc' for backup/restore procedures for this table. Once the database has been restored with the 2019.1 version, update your database schema: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the significant schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the significant schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. -------------------------------------------------------------------------- Interoperating With Previous Releases 1. Unless stated otherwise you can intermix any release of Helix Command Line (P4) with any release of the Helix Versioning Engine (P4D), but any functionality new to 2019.1 requires you to upgrade the client and/or P4D. See marks in the notes below. * -- requires new p4 client program including all client applications and derived APIs ** -- requires new p4d server program *** -- requires new p4p proxy program **** -- requires new p4broker broker program Any replica servers must be at the same release levels as the master server; any functionality that requires an upgrade for the master requires an upgrade for the replica, and vice versa. 2. Beginning with 99.2, remote depots will interoperate between UNIX and NT. Beginning with 98.2, remote depots will interoperate across (98.2 and higher) releases. In 98.1 and before, remote depots will only operate with another server of the same release. 3. As of 2005.1, remote depot support for 98.2 and 99.1 servers has been dropped. Attempts by 98.2 and 99.1 servers to contact 2005.1 servers still works, but the depots will appear devoid of files. -------------------------------------------------------------------------- Technology Preview features: Technology Preview features are currently unsupported, might not be functionally complete, and are not suitable for deployment in production. These features are provided to the customer to solicit interest and feedback, with the goal of full support in future releases. Customers are encouraged to provide feedback and functionality suggestions for Technology Preview features before they become fully supported. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r19.1/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2019.1 (2019.1/1796703) #1777138 (Bug #96749) ** Private editing of streams Private editing of streams allows a user to modify a stream in isolation from other users of that stream, which provides an opportunity to test the modifications. In contrast, if edits to a stream spec are public, they take effect as soon as the user saves the edited stream spec. Prior to this release, a user could edit a stream spec privately by using 'p4 stream edit'. This new feature is an improvement over 'p4 stream edit' in terms of visibility and tracking. A single atomic changelist can contain all the work on the stream spec and any associated code changes. The feature includes the -So, -Si, or -Sx options of 'p4 edit', 'p4 submit', 'p4 revert', and 'p4 resolve'. These options give you control of when your changes will affect other users. This feature also makes it easy to shelve the edited spec so that another user can test the changes in an isolated environment. For more information, see 'p4 help streamcmds'. #1770847 (Bug #98025) ** Background archive transfer for edge server submits The 'p4 submit -b' option allows submit from an edge server to transfer archive files in the background after the submit has committed its metadata. The user submitting the change will see the submit complete as soon as the metadata commit is completed, and will not have to wait for the archives to transfer. The archives will be pulled from the edge to the commit server using internally launched pull threads on the commit server. To enable 'p4 submit -b', the new 'submit.allowbgtransfer' configurable must be set on all participating servers in the installation. The 'p4 submit -b' behavior can be made implicit for any 'p4 submit' run on an edge server by setting the new 'submit.autobgtransfer' configurable to 1. The new 'p4 pull -u -t ' command may be used for recovery of failed archive transfers. See 'p4 help submit' and "Background archive transfer for edge server submits" in the P4 Command Reference. #1776989 (Bug #48387) ** The Helix Core Server Extensions are a fully-supported alternative to triggers. To learn about the advantages of using extensions, see 'p4 help extension' and the "Triggers and Extensions" chapter of Helix Core Server Administrator Guide: Fundamentals. Note: Extensions are not available with the Helix Versioning Engine on Windows platforms. #1747154 (Bug #96951) ** The graph data model now supports Git LFS locks. These locks are exclusive and are honored by all 'p4' commands that would interact with Git LFS files. Unlike the '+l' filetype locking, these locks are taken, released and listed by 'p4 graph lfs-lock', 'p4 graph lfs-unlock' and 'p4 graph lfs-locks' respectively. #1743677 * ** *** **** Autotune has been enabled by default. This functionality enables the TCP stack to manage the size of the network send and receive buffers, allowing more efficient use of the network, especially over slow high latency connections. This behaviour can be disabled in clients, proxies, brokers and the server by setting the 'net.autotune' configurable to 0; the default is now 1 (enabled). Clients can set this via "p4 set" or by adding the configurable to P4CONFIG files and servers can set this via 'p4 configure'. On Windows based platforms, send buffer sizes are not autotuned but are still manually configurable with the 'net.tcpsize' configurable. #1743672 (Bug #95158) ** The new 'db.storage' table replaces 'db.archmap' to provide a link count for archive files on the server. This tracking reduces the complexity of identifying lazy-copies, allowing +Sn type files to now be lazy copied and providing massive performance gains for 'p4 obliterate' on servers with a lot of integration history. Please note that the upgrade from 'db.archmap' to 'db.storage' may be non-trivial, although it will mostly be performed in the background after the server has restarted, and that the new table will also be potentially sizeable. This change impacts our recommendations for distributed server upgrades. Please refer to the upgrade notes section, which has been updated for this release. Technology Preview features in 2019.1 (2019.1/1796703) #1750665 (Bug #21301) * The Helix Core Client Extension mechanism allows the client to run scripts written in the Lua programming language. See 'p4 help clientextensionintro'. Minor new functionality in 2019.1 (2019.1/1796703) #1775358 (Bug #97011) ** Improved tracking of stream spec edits because the changelist number associated with a stream update is included in the spec depot records. #1774452 ** The definition of the P4LANGUAGE variable has been updated to say that it should be set to the language tag and optional region for the user. E.g. if $LANG is 'en-US.UTF-8', set P4LANGUAGE=en-US. Note that servers with existing message translations will need their message database to be re-seeded with an updated message file. #1771834 (Bug #92000) ** 'p4 archive' has a new '-z' option, which can reduce disk space usage. See 'p4 archive' in the P4 Command Reference. #1764315 (Bug #96321) ** Added '-s change' and '--into-only' flags to 'p4 integrated' command to refine output. #1763210 (Bug #96748) ** 'p4 streamlog' displays history of changes to streams. #1758544 (Bug #96970) ** Edge servers may now be chained together. See "Edge-to-edge chaining" in Helix Core Server Administrator Guide: Multi-Site Deployment. #1756090 (Bug #96667) ** Added support for utilizing multiple processor groups on Windows. Enabled by setting the 'sys.threading.groups' configurable to 1. See this configurable in the P4 Command Reference. #1753991 (Bug #93328) ** For all server types, the DistributedConfig field of that server spec shows a line for each configurable that is set to a non-default value. In this field, you can edit the value, add a new line to set a different configurable to a non-default value, or delete a line to reset that configurable to its default value. #1747051 (Bug #96666) ** 'p4 switch' has a new '--no-sync' flag to allow switching streams but without immediately syncing the target stream. #1740349 (Bug #61064) ** Connections from super users and operators will no longer be refused when the connection limit is exceeded. The limit is defined by the 'server.maxcommands' configurable. The new configurable 'server.maxcommands.allow' may be set to 0 to disable this. See "Limiting simultaneous connections" in Helix Core Server Administrator Guide: Fundamentals. #1735885 (Bug #373) * The verbose message output from 'p4 -s' now displays the actual error level: warning, error or fatal. Both error and fatal levels still cause 'p4' to return 1. For the case where existing scripts depend on the previous behavior, the API level can be set with '-Zapi=85' to cause all non-info output to be tagged with error. #1735085 (Bug #96336) ** Setting the new 'push.unlocklocked' configurable to 1 automatically unlocks files that were locked as part of a push, on push failure. #1733878 (Bug #66258) * ** *** **** Improvements to compression code yield 13-21% faster performance for binary files (sync and verify) and checkpoints (creation and replay). #1726148 (Bug #51996) * ** 'p4 reconcile' has a new '-t' flag that allows filetype changes to be detected. #1723334 (Bug #76162) ** 'p4 -ztag info' now reports an 'unloadSupport' tag with a value of either 'enabled' or 'disabled', depending on the existence of an unload type depot. Bugs fixed in 2019.1 Patch 16 (2019.1/2135798) #2128368 (Bug #106380) ** Missing archives were sometimes not report by 'p4 verify -z'. This has been fixed. #2128366 (Bug #106628) ** Under specific conditions that cannot normally occur, a file open for integrate but without any resolve records could cause the server to crash during submit. This has been fixed. #2126651 (Bug #104926) ** 'p4 unshelve' now correctly tracks temporary shelve copies created for pending resolves on edge servers in db.storagesh. #2124831 (Bug #105391) ** The performance of verifying archives using the storage tables has been improved. ('p4 verify -Z', p4 storage -v') #2119621 (Bug #106130) * The client-side threading for parallel sync no longer shares charset converters, preventing race conditions during translation of unicode type files which could corrupt the files in the workspace. #2118436 (Bug #104527) ** Fix for wrong stream view generation with an embedded wildcard. If a stream is a grandchild of the mainline, and has a one parameter import path, and share paths which are contained in the import path, then the view generated for the first share path with an embedded wildcard would be incorrect. This problem only occurred on Linux and Windows platforms. #2107876 (Bug #104119) ** Fix to allow a file in a virtual stream to be opened and submitted if the file is in a share stream path with an embedded wildcard. Bugs fixed in 2019.1 Patch 15 #2105325 (Bug #105997) * ** *** **** OpenSSL has been upgraded to 1.1.1k Bugs fixed in 2019.1 Patch 14 #2085707 (Bug #104559) ** 'p4 revert' now only acquires when necessary exclusive locks on db.resolvex, db.revsh and db.storagesh, and instead acquires shared locks on db.resolvex and db.revsh. #2084569 (Bug #104559) ** 'p4 revert' no longer acquires an exclusive lock on db.storage. #2080604 (Bug #105397) ** A save of a stream specification in which no changes are actually made to the specification no longer creates a changelist or consumes a changelist number. #2075996 (Bug #105149) ** 'p4 describe change' from an edge server was reporting a 'Slashes-in-client' error for shelves created by 'p4 switch'. This has been fixed. #2075778 (Bug #93890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2074058 (Bug #95097) ** 'p4 switch' now checks the stream hierarchy to determine if the streams are related rather than assuming streams in the same depot are related. To switch to an unrelated stream in the same same depot, you will now need to provide the new --allow-unrelated flag. Bugs fixed in 2019.1 Patch 13 #2066487 (Bug #105093) ** When background submit results in failed archive transfers, those archives may be restored using 'pull -u -t'. However, if the archives were not restored to the commit server before commands attempt to fetch them, the pull command might lose the ability to recover them due to the entries being removed from the commit server's rdb.lbr. This behavior has been fixed. #2064992 (Bug #105118) ** Ensure shelved archives are present when replacing with -f or -r. #2059990 (Bug #104937) ** Shelf promotions containing an integration can lead to storage inconsistencies. This has been fixed. #2058011 (Bug #93890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2051487 (Bug #103914) ** Shelving unresolved integ file will no longer lead to BAD digest error upon storage verification. #2048147 (Bug #104093) ** 'p4 verify -S' now reports the correct changelist number for +S type files. #2040677 (Bug #102314) * Windows clients now correctly report when they are unable to replace files when using the long filename support. #2038957 (Bug #102314) ** Clients now correctly report when they are unable to delete files. #2032946 (Bug #104279) ** Fix to ensure that the 'describe' command is not manipulating the promoted ktext shelf archive files. Bugs fixed in 2019.1 Patch 12 #2051777 (Bug #104945) * ** *** **** OpenSSL has been upgraded to 1.1.1i #2011450 (Bugs #042042, #102435) ** Windows file I/O now uses the native Windows API rather then the Posix file I/O routines. This removes the limit on the number of concurrent open files for the librarian and error logging. #2013289 (Bug #103714) ** 'p4 ldapsync -i' no longer stops when an error is encountered. Instead it waits the provided interval and runs again. #2009304 (Bug #102750) ** A crash bug would occur when submitting an integration from a local depot to a readonly depot. The integration was illegal, but would succeed with a sync/delete message, and a following submit would crash. This has been fixed. #2007606 (Bug #103570) ** The Ktext unexpanded digest and the file size is stored in the db.storagesh table when a file is shelved or promoted from an Edge server. #2008128 (Bug #102264) ** This enhancement supports automatic start of the Perforce p4diag tool when the Perforce Windows Service starts. Two things are required. Place p4diag.exe in the same directory as p4s.exe and p4 set -s Perforce P4DIAGLOG to the p4diag log file name. See the p4diag autostart KB article. #2003990 (Bug #102212) ** Previously 'p4 submit -b' would fail if submit.allowbgtransfer was not configured, or when that command was run from a server that was not an edge server. Now submit will succeed and fall back to the default submit archive transfer behavior for those scenarios. #1998628 (Bug #103411) ** 'p4 reshelve' could crash when file arguments were provided. This has been fixed. #1989630 (Bug #103165) ** The GetArchiveFileInfo() method called within the Archive() extension callback now returns the archive revision as a string rather than an integer. #1989171 (Bug #103202) * The 'Navigate to URL' message reported by 'p4 login' when using the Helix Authentication Service was emitted on stderr despite being an info message. This has been fixed. #1984646 (Bug #102995) ** Upgrading the server from pre-19.1 would store the wrong checksum for unexpanded ktext files in db.storagesh. The upgrade process has been fixed. To correct the checksums on servers that have already been upgraded to 19.1 or greater, please run `p4 storage -R -S`. Bugs fixed in 2019.1 Patch 11 #1977774 (Bug #102850) ** The replacement of a lazy copied shelved revision would cause the removal of the archive on downstream edge servers. This has been fixed. #1976546 (Bug #102609) Network errors on Windows and Linux are now more accurately reported when additional tracing such as net=3 or ssl=3 are used. #1975997 (Bug #102797) * Windows clients no longer leave trailing NULL bytes at the end of '+k' filetype files transfered via sync/print when the RCS 'Author' keyword was used and the username submitting the file was changed post-submit. #1972510 (Bug #102471) ** Fix for lock error "Locking failure: db.templatewx locked after db.resolvex!" when deleting a promoted shelf with a stream spec from an edge server client. #1971418 (Bug #101504) ** A rare error that could lead to database deadlock during journal rotation has been fixed. #1971417 (Bug #102020) ** MFA logins via URLs are now delivered promptly through edge-servers. #1969457 (Bug #72507) If a file in a task stream is submitted with the reopen flag, and a resolve had been done prior on the file prior to the submit, then the submit would fail with the messages "Files newly opened or reverted during submission". This has been fixed. #1967866 (Bug #102541) ** 'p4 unshelve' no longer crashes if a network error is encountered during completion of the command. #1967145 (Bug #102543) ** File transfers between pre 19.1 replicas with 19.1 and subsequent commit server releases can fail with a fileSize error. This has been fixed. #1960114 (Bug #102442, #102416, #102177) ** 'p4 submit' from an edge server using background archive transfer could erroneously succeed when archive transfer from the client to the edge server has failed. This has been fixed. Bugs fixed in 2019.1 Patch 10 #1955700 (Bug #99520) ** 'p4 tag' run with multiple arguments updating an autoreload label no longer causes the label to be loaded into memory and rewriten to the unload depot for each argument. #1951411 (Bug #101851) ** Background transfer for edge submit now ensures that the external address for the edge server performing the submit is valid before allowing the submit to proceed. #1938266 (Bug #97815, #101422, #101452, #101454) ** The storage permission requirements have been relaxed, normal users can now view the storage record table. The lbrFile and lbrRev fields are added to the error messages produced during a storage upgrade that are written to the 'storage_upgrade_errors' file when a digest is not computed for a keyword revision. The generation of digests during a storage upgrade can be surpressed using the 'lbr.storage.skipkeyed' configuration variable. The -v argument to 'p4 storage' now correctly reports unset digests. #1946483 (Bug #101314) ** Better error handling of an Extension's GlobalConfigFields callback. #1937478 (Bug #101639) ** 'p4 fstat -Ol' for graph depot could crash the server when run on mid-branch and a file there is deleted in the branch tip. #1931470 (Bug #101653) ** Single threaded server requests would start a pending storage upgrade request. This has been fixed. #1931197 (Bug #100917) ** The 'p4 graph cat-file' command was missing the -o option. This change adds in the missing option. #1930299 (Bug #101687) ** Improve error handling for Extension AuthPreSSO, Archive and MFAPre hooks for when both the Extension archive and unpacked files are missing. #1930296 (Bug #101704) ** The '%' character was not properly escaped when saving Extension instance configuration data. #1929471 (Bug #101586) ** Extension instance configuration data is now refreshed between invocations within a single client connection. #1929166 (Bug #101571) ** Extension configuration data no longer strips quotes. Bugs fixed in 2019.1 Patch 9 #1926603 (Bug #101216) * Ditto mappings could cause 'p4 reconcile' or 'p4 clean' to miss files. This has been fixed. #1924302 (Bug #101494) ** Under specific conditons 'p4 submit -e' of a file of action branch could be submitted in such a way that the archive file is not where the server expects. This has been fixed. #1919900 (Bug #101127) ** Make the storage table building process visible to the monitor. Bugs fixed in 2019.1 Patch 8 #1915408 (Bug #101215) ** A memory leak in SSL-enabled servers has been closed. Bugs fixed in 2019.1 Patch 7 #1914179 (Bug #101297) ** In some cases, RCS archive locking was causing slow sync performance. This has been fixed. #1912366 (Bug #101243) ** The first stage storage upgrade was generating an incorrect error message about a failed digest. This has been fixed. #1912256 (Bug #101004) ** The first phase of the storage upgrade process now limits the number of storage records in a single transaction to 1000. Bugs fixed in 2019.1 Patch 6 #1908964 (Bug #100555) ** Ignore permanent .lck failures on attempts to open a RCS file for reading. #1908963 (Bug #93870) ** 'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write locks on all tables; instead only the tables required are locked. 'p4d -cshow' now only takes read locks. #1908963 (Bug #89608) ** 'p4d -cset' and 'p4d -cunset' now resolves the journal file to write too in the same way that the server would if started with the same flags and environment. When using 'p4d -cset' to set P4JOURNAL, if the new value would change the journal file being used, the new value is used instead. #1906389 (Bug #100948) ** 'p4 submit' now fails with a "tampered with after resolve" error when trying to submit an unshelved file that is resolved with 'ay' and then modified inadvertently. #1904568 (Bug #99171) ** Partitioned db.sendq tables are now removed if empty at the end of parallel syncs and on client delete. #1904026 (Bug #100945) ** 'p4 revert -C clientname' should ignore admin's client since the client name is specified as a parameter. This has been fixed. #1902943 (Bug #100588) ** The server could return a bad result when attempting to join non-matching table keys. This has been fixed. #1902273 (Bug #100116) ** Client extension p4:connect connection errors were not reported in p4.errors. This has been fixed. #1902173 (Bug #100158) ** UTF8 type files sync'ed from cache mode replica with a pre-2016.2 client could report a depot file error. This has been fixed. Bugs fixed in 2019.1 Patch 5 #1895699 (Bug #100608) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. #1891322 (Bug #100615, #100616) ** Log a message if computing the digest for a keyed file fails during the storage upgrade process. Avoid holding the write lock on the storage table during digest calculation during the storage upgrade process. #1889618 (Bug #100613) ** Creating file locks (.lck) could take a long time to fail. Check the error returned by the OS and fail quickly if it is a permanent error. #1882543 (Bug #83623) * ** The default value of the 'filesys.lockdelay' has been decreased from 300 to 90 to ensure abandoned .lck files are correctly deleted. #1882284 (Bug #100524) ** Changing the file type from a tempobj type (+S) to a non tempobj type incorrectly removes all previous revisions. This has been fixed. Bugs fixed in 2019.1 Patch 4 #1875389 (Bug #100119, #100351 ) ** 'p4 reconcile -t' could remove file type modifiers that should be preserved. This has been fixed. #1865912 (Bug #100130) ** Prevent a crash when replicating a file into a directory with no write permissions. #1865694 (Bug #99021) ** Fix for stream import+ case "import+ path...". Bugs fixed in 2019.1 Patch 3 #1862232 (Bug #100081) ** Enabled 'p4 submit -Af' for an edge server, for backwards compatibility. Please note that '-Af' has the same functionality as the '-Sx' parameter, and the use of '-Af' is discouraged in favor of '-Sx'. #1862231 (Bug #100065) ** Now 'p4 shelve -d' without a corresponding '-c clno' changelist number returns a usage error message. #1860142 (Bug #99990) ** Reenabled 'p4 submit' parameter '-Af', for backwards compatibility. Please note that '-Af' has the same functionality as the '-Sx' parameter, and the use of '-Af' is discouraged in favor of '-Sx'. #1858257 (Bug #99978) ** The upgrade storage walker is incorrectly taking the walker lock in exclusive mode, blocking 'safe' commands during the 2nd phase of the upgrade. This has been fixed. #1854522 (Bug #99733) ** If a changelist had a stream spec, and the changelist was shelved and the stream spec was not open in the current workspace, any attempt to change the change spec would result in a error message. Now the error will only occur if the stream field in the change spec has been changed. #1848589 (Bug #99557) ** 'p4 describe -S clno' would display a stream spec which was opened in the changelist but not shelved. Now 'p4 describe -S clno' shows a stream spec only if it has been shelved with the changelist; 'p4 describe clno' continues to show a stream spec if it is opened for edit in the changelist or was submitted with the changelist. #1808412 (Bug #98651) ** The server can enter an infinite loop trying to join the rev and have table during a sync request using the #have revision specifier and a changed client view. This has been fixed. Bugs fixed in 2019.1 Patch 2 #1844397 (Bug #75382) ** The maximum size of shared memory for monitor table use was too small (2048 8K pages). Now it's 32768 pages for all platforms except Windows 32bit where memory address space is severely limited. #1843450 (Bug #99587) ** If a stream spec had been opened for edit in a numbered changelist and then reverted, 'p4 change -o clno' would still show the stream spec in the changelist. Fixed so that that the reverted stream spec no longer shows up in the changelist. #1840313 (Bug #99534) ** If a stream spec has been shelved in a numbered changelist and then reverted, editing the changelist would result in warning that the stream spec is not open, even if the stream spec name was unchanged. This was problematic for downstream applications. Fixed, so that if the name is changed, the warning is still generated and the change is not saved. However if the name is not changed, no warning is issued. Also added a comment "Shelved, not opened" to the stream field of the change spec output for this case. #1838469 (Bug #99468) ** If a stream spec was opened in a numbered change list, the changelist was shelved, the opened stream spec was reverted, and then the stream spec was deleted from the shelf, 'p4 change -o clno' would still show the stream spec in the changelist. Fixed, so the new behavior no longer shows the stream spec in the changelist. #1836989 (Bug #99436) ** 'p4 shelve -As ' and 'p4 unshelve -As ' are not legal uses of the commands, but were allowed. Now an usage error is returned in both cases. #1836483 (Bug #99413) ** For a stream spec in a changelist, the tagged output of 'p4 -ztag change -o clno' and 'p4 -ztag changes' will now report a 'streamState' tag with values of 'streamOpened', 'streamShelved', 'streamOpenedShelved', or 'streamSubmitted'. #1834884 (Bug #99267) ** Using 'p4 submit -b' with triggers could cause triggers to return failure status on Linux platforms when no failure occured. This has been fixed. #1834169 (Bug #99391) ** Added a stream spec digest to the output of 'p4 -ztag stream -o' and 'p4 -ztag describe -S clno'. Added a stream spec diff to the output of 'p4 describe -S clno'. The difference is between the stream spec version in the given changelist number and the head version of the stream spec. #1831717 (Bug #99288) ** 'p4 revert -So' would incorrectly remove the stream name from a shelved or submitted changelist. This has been fixed. #1831716 (Bug #99275) ** Changed MsgDm::StreamMustResolve from a warning to an error. #1832439 (Bug #98561) ** Changed "p4 graph receive-pack" to allow tag deletion. This also fixes the issue for tag deletion via push from git to Git-connector: git push --delete #1830302 (Bug #99247) ** Enabled triggers for submitting and shelving for stream specs. If an opened stream spec is submitted or shelved, and if a trigger is defined with a file spec of either '//stream/name' or '//stream/name/...', then the trigger will be invoked. The trigger variable %stream% will be set to the name of the stream. #1829838 (Bug #99300) ** Journal header notes included with database table unloads created by 'p4 journaldbchecksums -u' now contain the correct case/unicode flags and the server root of the server they were unloaded from. #1830740 (Bug #99382) ** Support for Helix Core Extensions was disabled for Windows servers due to unrelated performance concerns on that platform requiring a conflicting toolchain change. Extensions remain fully supported on Linux and Mac. #1828396 (Bug #99271) ** When 'p4 stream -o' was called at a change that did not match a stream spec modification, the most recent stream spec would be returned. The new behavior is to return the most recent version prior to the specified change. #1827416 (Bug #98909) ** 'p4 change -df' of submitted changes containing stream edits now displays the correct messages about the stream and files in the change that prevent the delete. #1825235 (Bug #99035) ** Multiple stream specs could be shelved to the same shelf number. This has been fixed. #1825187 (Bug #99106) ** Users could see the description of a restricted submitted change using 'p4 changes' or 'p4 change -o' when having list access to a directory that is common to all files in that changelist without having list access to the specific files in the change. This has been fixed. #1824517 (Bug #98988) ** 'p4 streamlog' now correctly reports all stream spec changes regardless of which fields were changed. #1824117 (Bug #99184) ** 'p4 shelve -As -d' now deletes the stream from the shelf. Therefore, the message it returns is now correct. #1823281 (Bug #99158) ** 'p4 diff2' run by a user with only list access could cause a crash. This has been fixed. #1822891 (Bug #98978) ** 'p4 switch' now reports the correct target stream name on error. #1822172 (Bug #99042) ** 'p4 stream -o //streamname@changelist' now includes the specified version rather than the current version of all fields. Previously, only the Paths, Parent and Type field would be the specified version, and all other fields would be the current version. This fix applies only to data created by the 19.1 server and later. #1822042 (Bug #98542) ** A temporary lock now prevents concurrent updates to an RCS file. #1821878 (Bug #99077) ** A race condition can no longer cause a lock (.lck) file to remain after use. #1821475 (Bug #99141) ** 'p4 submit -i' run against an edge server using background transfer would failed to submit the change. This has been fixed. #1821208 (Bug #98861) ** 'p4 renameuser' could leave orphaned locks when the user being renamed had opened exclusive checkout files (+l). This has been fixed. #1820930 (Bug #99117) ** 'p4 protects -M' was not displaying the correct result in P4AUTH environments. Additionally, the path handling for this command was only considering protections that matched all of the provided path not just a portion of that path. This has been fixed. #1820503 (Bug #99098) ** Updated shelving messages relating to stream specs. Now if an opened stream spec was implicitly or explicitly specified to be shelved but is not in the changelist, an appropriate error message appears. #1819042 (Bug #98967) ** A 'p4 shelve' command with no arguments would fail to shelve an opened stream spec. This has been fixed. #1818502 (Bug #99050) ** The db.storage upgrade process (phase 1) was incorrectly executing on forwarding replicas. This has been fixed. #1818437 (Bug #99010) ** A 'p4 stream -o //streampath@=shelf' command will now display a shelved stream spec, where "streampath" is the name of the stream and "shelf" is the changelist number of the changelist which is shelved. #1818393 (Bug #99041, #99074) ** 'p4 shelve' would output messages about shelving files when only a stream spec was shelved. This has been fixed. #1818105 (Bug #99075) ** 'p4 reopen' now has a '-Si' flag for moving open stream specs and files between changelists in a single command. #1816910 (Bug #98925, #98910) ** Submitted changes containing stream-only edits now have the correct "root" field set in the db.change table. #1816226 (Bug #99003, #99022)** 'p4 describe -S' would not always show accurate information about shelved stream specs. This has been fixed. #1814927 (Bug #98586) ** The storage error file generated during an upgrade to 19.1 was always being created even if no errors were detected. This has been fixed. #1814802 (Bug #97697) ** A 'p4 shelve -d' command could fail to remove an unneeded librarian file. This has been fixed. #1814745 (Bug #98294) ** 'p4 storage -u' run against an edge server will now only update the local shelf storage records. #1814074 (Bug #96617) * Threaded parallel sync could occasionally fail to chmod or rename temp files. This has been fixed. #1813039 (Bug #98855) ** Relative file paths passed into 'p4 graph lfs-lock' commands are now handled correctly. #1813017 (Bug #98710) ** Clarify help text for 'p4 grant-permission'. #1810430 (Bug #98540) * When P4CLIENTPATH is set, clients can no longer create symlinks that could be followed to access paths outide of the sandbox. #1809639 (Bug #97003) ** 'p4 diff -As' and 'p4 diff2 -As' allow stream specs to be compared. Shelved streams can be referenced with the @= notation. Bugs fixed in 2019.1 Patch 1 #1808413 (Bug #98605) ** Submitting import+ files from a task stream could cause corruption to its task stream. This has been fixed. #1807936 (Bug #96532) ** 'p4 describe' would erroneously show a filetype for the prior version of an added file. This has been fixed. #1807617 (Bug #98544, #97979) ** All stream updates now create associated changelists rather than just consuming changelist numbers. #1806502 (Bug #98766) ** The p4 configuration setting 'submit.allowbgtransfer=1' would cause replica file content pull threads using '--batch' to crash. This has been fixed. #1805822 (Bug #98424) ** Certain commands were requiring the user to log in to all upstream edges, not just the edge the user is connecting to. This has been fixed. #1805680 (Bug #97885) ** 'p4 graph lfs-lock' is no longer allowed for non-LFS graph files. #1805524 (Bug #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. #1803226 (Bug #98543) ** A StreamNeedsResolve message would occur upon submit if another user made changes identical to the current open stream spec. This has been fixed. #1802979 (Bug #94895) ** Under some conditions, when successive task streams were created and populated, a superuser could delete a change with files in the changelist. This has been fixed. #1802016 (Bug #97847) ** Normalize the target ref when testing for LFS locks during 'p4 undo --repo'. #1799999 (Bug #98500) ** 'p4 filelog' results containing huge descriptions or many integration paths results in Rpc buffers too big. Fixed. #1799583 (Bug #94400) ** 'p4 help-graph client' now shows proper syntax lines for graph depots. It includes reference for finding flag descriptions and explanation about how hybrid scenario works. #1798894 (Bug #97895) ** In some cases 'p4 -ztag stream -o //streampath@have' would result in a message where the stream name was printed, but the client name should have been reported instead. #1798095 (Bug #98367) ** If 'p4 unshelve' acts on a shelf with files which are inaccessible to the current user and client, the first file in the filelist would be displayed for each file in list. This has been fixed so that each filename is displayed instead of the first file. #1798061 (Bug #97962) ** 'p4 resolve -So' now displays "No stream fields to resolve." if there are no open stream fields which need to be resolved. #1791371 (Bug #98467) ** Fixed 'p4 submit -Sx' and 'p4 submit -So' for edge servers. #1782033 (Bug #97820, #98182) ** 'p4 resolve -So' did not detect a conflict for an open modified stream spec when another client/user made a public edit of the same stream spec. Fixed. Bugs fixed in 2019.1 #1787364 (Bug #98256) ** The 'p4d -xu' command no longer actually executes the upgrades on a standby or forwarding standby server. The upgrades are applied as they are journalcopy'd from the upstream server. The 'p4d -xu' command is still required to help prevent unintentionally upgrading the server by mistakenly starting the server using a binary from a new major release. #1782963 (Bug #98117) ** 'p4 pull' could fail to replicate spec depot archives due to a race condition introduced by a performance enhancement in release 2018.2. This has been fixed. #1782803 (Bug #95173) ** 'p4 describe' would report errors when run against shelved changelists created by 'p4 switch'. This has been fixed. #1781879 (Bug #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. #1780867 (Bug #97063) * Parallel sync now respects the '-C charset' client flag. #1780019 (Bug #97125) ** 'p4 unshelve' and 'p4 revert' now update syncTime, correcting the behavior of 'p4 reconcile -m'. #1777076 (Bug #98218) ** Revert of moved file when the moved-from file was deleted at the head revision in a edge/commit environment could have had unpredictable results due to accessing uninitialized data. This has been fixed. #1775117 (Bug #98350) ** 'p4d -xu' may no longer be run with '-Joff'. Some upgrade steps make metadata changes that must be reduplicated, which cannot happen when the upgrades are run with journaling disabled. #1773233 (Bug #97211) ** Submitting unshelved ktext files with undo actions could cause incorrect tamper errors. This has been fixed. #1772348 (Bug #97898) * The 'p4 clone' command could fail when using remote specifications with DepotMap paths containing spaces. This has been fixed. #1768961 (Bug #97460) ** The 'mandatory' option is now disallowed when creating a new standby or forwarding standby server. After the standby or forwarding standby server's journalcopy thread has caught up with the journal on the server from which it is journalcopy'ing, the 'mandatory' option can then be set for an HA standby server. #1768266 (Bug #98019) ** Stream specs that are not at latest or are being privately edited no longer show comments on the fields that were or are being edited. #1766398 (Bug #97896) ** Graph depot commands now open a maximum of 128 pack files at the same time. #1765852 (Bug #97211) ** 'p4 fstat' could show an invalid or missing haveRev value when a file that was deleted is being re-added. This has been fixed. #1763055 (Bug #95105) ** Larger journal fragments will now by default be sent to journalcopy. The 'rpl.jnl.batch.size' configurable as defined for the server executing the journalcopy (which is generally a standby server) can be used to tune the journal fragments sent to journalcopy. #1758633 (Bug #97773) ** 'p4 receive-pack' would downgrade the force push to a new repos to a normal push. This has been fixed. #1757383 (Bug #96635) ** P4DEBUG configuration set with 'p4d -v' could be incorrectly parsed if a non-numeric value was followed by additional options. This has been fixed. #1745310 (Bug #96271) ** Under certain conditions a submit from an edge server in an autotune enabled environment from an old Windows client application could hang. This has been fixed. #1743439 (Bug #96758) ** 'p4 failover' now checks to ensure that the standby is suitably licensed for its role following failover. #1742700 (Bug #93206) ** 'p4 reconcile' would fail with 'Opening too many files' error when enforcing the 'MaxOpenFiles' group limit, even when the command opened less than 'MaxOpenFiles'. This has been fixed. #1739928 (Bug #95194) ** 'p4 delete' against graph depot files that are in the have exception list could remain in the exception list even after the change was submitted. This has been fixed. #1734228 (Bug #96791) ** Prior to failing over, 'p4 failover' now checks to ensure that there are no archive file content transfers that were not completed on the standby. #1732870 (Bug #94976) ** The 'p4 revert' command now batches its journal work into fewer larger transactions, resulting in more efficient replication of this command. #1728271 (Bug #96335) ** Admin users could not unlock files that had been locked by a failed 'p4 push'. This has been fixed. #1726773 (Bug #93725) ** Virtual streams would incorrectly import from the stream's parent's parent when the import path was specified with a single path. This has been fixed so that the path imported is from the virtual stream's parent. #1726440 (Bug #96818) ** A client's have records could be incorrectly overwritten when syncing to #have and the client's view included ditto mappings. This has been fixed. #1726251 (Bug #96545) ** 'p4 user -D' no longer implies the '-F' flag. To globally delete a user, their client workspaces and remove them from groups and the protections table, both flags must be provided 'p4 user -D -F'. #1723981 (Bug #96826) ** 'p4 failover' no longer hangs waiting for the 'pull -L' thread to complete its work if the LEOF had not been advanced to the last consistency point journalcopy'd by the standby and either the master does not participate in the failover or some mandatory standby is not actively journalcopy'ing at the time of the failover. #1722715 (Bug #92743) * Client-side UTF8 validation failed to detect files that terminated part way through a multi-byte character. This has been fixed. #1722358 (Bug #96273) ** Certain DVCS scenarios could lead to an 'Invalid zipfile format' error related to rev records counts being off. Improved error checking now produces a more comprehensive error message on the sending side of the DVCS operation. #1720213 (Bug #96546) ** The 'p4 clean' command would incorrectly count workspace file updates against the 'MaxOpenFiles' group limit causing the command to fail. This has been fixed. #1718223 (Bug #94828) ** If characters in a commit short-SHA are all numeric, sync fails assuming that the all numeric short-SHA is a change number. This has been fixed.